{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# PCA去噪"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 之前我们自己随机创造数据的例子"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = np.empty((100, 2))\n",
    "X[:,0] = np.random.uniform(0., 100., size=100)\n",
    "X[:,1] = 0.75 * X[:,0] + 3. + np.random.normal(0, 5, size=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X[:,0], X[:,1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.decomposition import PCA"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "pca = PCA(n_components=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "pca.fit(X)\n",
    "X_reduction = pca.transform(X)\n",
    "X_restore = pca.inverse_transform(X_reduction)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "'''降维的过程可以看成是去噪，可以看到原来离散的数据都聚集到主成分向量上了'''\n",
    "plt.scatter(X_restore[:,0], X_restore[:,1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 手写识别的例子"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn import datasets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "digits = datasets.load_digits()\n",
    "X = digits.data\n",
    "y = digits.target"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "'''人为创造噪音'''\n",
    "noisy_digits = X + np.random.normal(0, 4, size=X.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "'''取出部分数据进行可视化展示(再添加了噪音的情况下)'''\n",
    "example_digits = noisy_digits[y==0,:][:10]\n",
    "for num in range(1,10):\n",
    "    example_digits = np.vstack([example_digits, noisy_digits[y==num,:][:10]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(100, 64)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "example_digits.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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DoQ5u+5fdtlldA5XY9us0F+EREREJLC0EBIREZHA0kJIREREAksLIREREQksLYREREQksLyqxtLT023Pnj1hOasU2r17Nx2LNedkjflYRU6nTp3oHB9//DHdhpw7d85OnDgRlv/www9w/2LFitGxbr31VpizCrudO3fC/Prrr6dzZAeqLmCN/1yNFe+++26Y33zzzTBPSkqC+ejRo+kcDHttzf6q3ChYsGBYzioY8+fPT8dKTk6G+YEDB2B+6NAhmLsqOphJkybRsVCjTfa5cUGfZTPeLHnlypUwz8zMpHOwyhAmIyMDniuzZ8+G+3fu3NlrfDOz48ePw5w18mTVXNl19uxZO3jwYFjet29fuH+uXPzfqxMnToQ5q4RiTYa//PJLOscff/wRlu3fv5/uX6hQIViBN378eLh/6dKl6VjvvPMOzFmVbZkyZWDer18/OodvI9H4+Hhr1apVlvd3NZVl1wZW7ckaOBctWpTOwa5LQ4YMoY9hNm7cCPPq1avTx7BqwfT0dK+5Z86cSbexir2s0l+EREREJLC0EBIREZHA0kJIREREAksLIREREQksLYREREQksLyqxgoUKACrtFhF19q1a+lYPXr0gDmrqmJYVYHreTG5c+e2AgUKhOXPPfec9/is/1KHDh1gfvr0aZiz6jozsw8++IBuQ0KhkJ07dy4sr1mzJtz/xRdfpGNt3rwZ5qzyJTvmzJnj/Zhjx47Z559/Hpaz/lmufnEjR46EeVRUFMxZZcr27dvpHMeOHaPbGFRF1K5dO7hvxYoV6TisAoSdo127doX58OHD6RysEothn0FWHXrq1Ck6FquEYj3ktm7dCvN169bRObLj3LlzsHKN9UZDVZDnvfbaazBn196MjAyYu6purrvuurCM9bYz+6sqD1X4sOqlp556io71zDPPwPzNN9+EecOGDWHOeqyZ+Vc25s2b19k/8EKu6yirfmNVxNHR0TCfNm0anSM7FaXnzp2DPRVZn8WvvvqKjjV37lyYsx5orJLu22+/pXP8p/QXIREREQksLYREREQksLQQEhERkcDSQkhEREQCSwshERERCSyvqjGmUqVKMF+xYgV9DLtb/rPPPoN5iRIlYJ4vXz46R58+fWDOKpvOnj1r+/btC8tLliwJ93dVTixfvhzmrHqBPadevXrROWJjY2HOenFFRERYZGTW3/IXXniBbmNzTJ48GeZNmjSB+cKFC+kcrj5yTGZmJqwkWrx4Mdyf9fQx4xVJ7HVJSEiAuatyC1XxucTGxlqdOnXC8jVr1sD9WZ88M16FMW7cOJizfm2u4/MVERFBq/IQV5+oatWqwfy2227zGqtx48Z0Dlb54hIZGQnPFVbRxa4/LomJiTD/T3syZUXBggVhpRnKLub222+HOaumbd++PcxZb0Qz3juQSUlJgdcT1hOOvRdmvE8nu/ax78HsvLYuuXPnhn0YWX9NVs1mxivaBg8e7PWcOnbs6LW/D/1FSERERAJLCyEREREJLC2EREREJLC0EBIREZHA0kJIREREAksLIREREQksr/L51NRU27RpU1jOylT//PNPOlbx4sVhftddd8E8IiIiC8/wPxMVFeVVqspKGc3M5s+fD3NWks0auLqO+48//nA8u//cqFGj6LaDBw/CnJUms1LtNtKp2mkAACAASURBVG3a0DmWLl3qeHZY4cKFYfPTFi1aeI+FytRd2E8KuBw5csT7MQh7rujzeh77yQbWhJL9XMS2bdvoHOPHj6fbfGzZsgXmrmsM+6yNGTMG5r1794Z5XFwcncPVEJU5dOgQfF2efvpp77H27NkDc9TU1Yy/XuXKlfOeO6dkZmbSbawknTW1Zj/H4SqfZ99FTL58+eyKK64Iy/PkyQP3b968udf4ZrwcnTU+dtm1a5f3Yw4dOgR/GoKVvJctW9Z7jpy69uUE/UVIREREAksLIREREQksLYREREQksLQQEhERkcDSQkhEREQCKyIUCmV954iIw2bGyzT+PsqFQqEiF4Y6vr8NeHxml/4x6vj+Ni71c/RSPz4znaN/92Okx3chr4WQiIiIyKVE/zUmIiIigaWFkIiIiASWFkIiIiISWF4tNhITE0Ply5cPy0+ePAn3d/38fbFixWDOfm69aNGiME9OTqZzZGRkwHznzp1J6Caq2NjYEPrp9oSEBDhOeno6nZs9L9+fFS9cuDDdht4LM7Ply5fD42Pv39mzZ+E4GzZsoHOz1gKsRcmOHTtgXqpUKToHOxc2bdoEj8+MH+Pp06fhWKwVgZnZ/v376TakQoUKME9KSqKPqVq1Ksx930P2XrHjNuM/41+kCL6/MCoqCuauc5R9RtasWQOPLz4+PoTmL1SoEBzn2LFjdO6UlBSYHz58GOasZY6rlU5qairM161b532OMsuXL6fbWHsI1+cKYS1zzPC1eufOnZaUlAT7/7DjO3PmDByftRcy4+fcuXPnYM7aXNSoUYPOwfh+Btnx7d69m87BvidY2yrW7oWd667HsOMzM0tISAihazlr+bRu3To6P2uTwq7vtWvXhnlMTAydA93r/Oeff9Jz9EJeC6Hy5cvbsmXLwnLWR+rOO++kYw0fPhzm7GS69957Yc56y5jxRcett94KV2jx8fHWo0ePsLxnz55wHNbnx8zs+++/h/n7779PH4Nce+21dBsbKyIiAh4fe//27t0Lx2nSpAmd+/rrr4f5iBEjYM76cLn6mbFzoUWLFnSFzY6RfZl8+eWXdP7Ro0fTbQg7lilTptDHzJs3D+a+7yHqfWRm9vvvv9O52Zco6yfEFkiuHmusz1G5cuXg8RUpUsSeeeaZsJz1AZs6dSqde8mSJTB/5513YM6uMY8++iidgy1Aa9as6X2OMq5+g/3794f52LFjszy+mdmLL75Itz3wwANhWcOGDen+7PhYb8R69erRsdg5yhbA7B8WPq/3eb6fwTVr1sBx7r//fjrHokWLYD5x4kSYN2vWDOa//PILnYP1OmPHZ/bXP2jRZ4stamrVqkXnz5cvH8zZInDGjBkwr1KlCp0D/dGjcePGdP8L6b/GREREJLC0EBIREZHA0kJIREREAksLIREREQksr5ulmY4dO8Kc3ShpZjZkyBCvOebPnw/zihUr0sewqhimbNmy9uabb4blNWvWhPu7qqpuvPFGmA8YMADmL730EsxZdVZOYjdKum4G/+KLL2DeqlUrmLMbj1mFgJn/++fCqtZee+01+hh2c960adNgzl6vrl270jk2btxIt/lgr2+HDh3oY9jn86GHHoI5uxncdVPi0qVL6TYkPj7eWrduHZazGytvuukmr/FdfvvtN5g//PDD9DG+NyXntHHjxnnl7ObjV199lc4xa9assMxVbXnmzBlbvXp1WL5gwQKv52RmNmzYMJizzyAbi1Uombmr8nzUqVMH5j///LP3WC1btoQ5+myYuYuGXAUFTGpqqm3atCks7969O9yffd+Z8feKfecdOHAA5uwabmbWvn37sMxVZHAh/UVIREREAksLIREREQksLYREREQksLQQEhERkcDSQkhEREQCy6tqLC0tDd65zXosxcbG0rFY+4S5c+d67X/dddd5z+GqFEIaNWoE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PUKcVRCZmb399tswZ093HT16NMyfeOIJOsezzz5LtxUH9lRgM353f7169WDOqsPOP/98Ogf7GTJ//fUXrEDp2bMnHO/6/bGnlbLKqXfeeQfm7AncZu72CUxGRgasjLnhhhvg+HHjxtF9scffoycfm5l99NFHME9LS6NzuB6Nj4TDYVhtwX5WXbt2pftiFTmsmmP79u0w37FjB53D9dRgJCYmxho1auTJL7roIjh+3rx5dF+sApV9btgTtYuzMszFT9uGAm+++SbMP/nkE5j/9ttvMH/ppZd8zes6b48fPw6fSjxy5Eg4vkqVKnRfV1xxBcxZ+52BAwfC3FUZ5qooYyIiIjwZe8o5uyaamf36668wZ9WsP/zwA8xR66sCr7zyCt3G5OXlweot9kTx++67j+6LXS9ZpTRrdeOCKvMOHjxY6NfrL0IiIiISWFoIiYiISGBpISQiIiKBpYWQiIiIBJYWQiIiIhJYWgiJiIhIYPkqny9ZsqSzieOZXA0tV65cCfNWrVrB/JprroF5mzZtCv1+/k52dralpKR48rp168LxrHGsGW8Gycrh2c/DhZUyMsnJybBUHjUQNDtdBsu0b98e5qFQyNd7CofDvsb/nYiICCtdurQnX7p0KRzvOkcrVqwIc9Yck5VrF6dQKGQlS5Ys9HjUoLXAkCFDfM194MABmB86dMjXfoqClWu7yqJZeS4r42YNMF1cTYOZo0eP2hdffOHJ2aMc2ONJzE4/LgJhTWp79+4Nc9YY0ww3anY1XY2JibEmTZp48i1btsDxrtJv1kx46tSpMEfzmplt3LiRzsEalj788MMw379/P2wg26lTJzieNag2Mxs8eDDMWTNmds13PUbm1VdfhXnlypXpa+Li4qxZs2aefNeuXfQ1zPDhw2HOGgPXr1/f9xzoERfsuBH9RUhEREQCSwshERERCSwthERERCSwtBASERGRwNJCSERERALLV9WYX/fffz/dNmXKFJijO9XNzCZMmADzffv20Tk2bNjgeHde0dHRsELs008/heM7d+5M91WnTh2Yf/bZZzBnFTmuipF///vfdBty5MgReCw333wzHM8aHprxKhNWtcGaQObk5NA5oqKi6DYmFApZqVKlPHmDBg3geHZemfFGscVZ6eY6f4uDq+Fjnz59YM6akm7btg3mrMFwUZw8edJ2797tyVlDS5dHH30U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\n",
      "text/plain": [
       "<Figure size 720x720 with 100 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_digits(data):\n",
    "    fig, axes = plt.subplots(10, 10, figsize=(10, 10),\n",
    "                             subplot_kw={'xticks':[], 'yticks':[]},\n",
    "    gridspec_kw=dict(hspace=0.1, wspace=0.1)) \n",
    "    for i, ax in enumerate(axes.flat):\n",
    "        ax.imshow(data[i].reshape(8, 8),\n",
    "                  cmap='binary', interpolation='nearest',\n",
    "                  clim=(0, 16))\n",
    "\n",
    "    plt.show()\n",
    "    \n",
    "plot_digits(example_digits)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "12"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''PCA降噪'''\n",
    "pca = PCA(0.5).fit(noisy_digits) # 只保留50%的数据，丢失了数据的情况下反而起到了降噪的效果\n",
    "pca.n_components_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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iYl0DFcbIV/smjx+/Hj6Ht/KP/Z97dixg74HPR3cp9pTfxESERGRwNJESERERAJLEyEREREJLE2EREREJLA0ERIREZHA0kRIREREAsur9jMnJweWUsbHx3sPXKdOHZizxoMlS5b0HiOaz4VK7lgZ3qJFi+h6WNNDpm/fvjBPTk6m73E1nERycnJgOfOGDRvg8m+88YZzXQgr52WNI13lx77bd/JzoccdpKenw+Wfe+45ui5WwsoegcCaSrJGiWb+x3VWVpb9/vvvZzz25MmT6bpat24N8++//x7mXbp0OYNP+P9XsGBBr+VzcnLs4MGDEfm6devg8rEqkTczq1mzJsxdx2g0jY/ZPmSNpefNm0fX9corr8D8s88+g3n9+vVh7npEQJkyZSIyV0Pr7OxseI6w82nbtm10Xb6NjPv16wdz1z50lZ4j2dnZsDk4azLu2n8XX3wxzFevXg1z9nuwceNGOkajRo3oay6okSr7XJ988klUY8RKQkJCRObTdF1/ERIREZHA0kRIREREAksTIREREQksTYREREQksDQREhERkcDybrpauHDhiBxlZmY33XQTXdevv/4Kc1ZZsGbNGphfdNFFdAxU7XA66E5zVrngqjaoUaMGzFesWAHzq666CubRVE4xcXFxsIqHVb40adKEros1KmRVPN988w3M77//fjpG6dKl6WtMXFwcrBYMhUJw+Q4dOtB1sUaNL730EsxRJYkZbggYrdy5c1tSUlJEXrt2bbg8+6xmvNEma3r41VdfwZwd62b+jXPj4uJgI97LL78cLj9u3Di6LtawmFVatWnTBua+lW+nw/Zhs2bN4PK33347XRd7z9SpU2HOqj1dzX9R9ZBLrly54DWlY8eOcHmWm5lNmjQJ5hkZGTBH36uZ2c6dO+kYrCE0w7aPXatZw3AzXu3JoGa2Zws6f9g23nrrrXQ97Nx96623YM5+V13f41+lvwiJiIhIYGkiJCIiIoGliZCIiIgEliZCIiIiEliaCImIiEhgeVWNmZmFw+EzyszcfXhY7yfWC+fSSy+FOateMovdXeaoL5AZr0ox432cfvnlF5iznlDXX3/9aT6dH7SvWNXfAw88QNczc+ZMmLO+OqhHnRmvXIq1/Pnzw/zee++l79m8eTPMWd8rVsH05JNPnubTnblwOGwnTpyIyFFmZtayZUu6rr///e8wZ9Vv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z4Z5w4YNYd6xY0c6hm9F2an0FyEREREJLE2EREREJLA0ERIREZHA0kRIREREAksTIREREQksr5KH3LlzW/Hixc94eVah4MLucGdtDVyfx9WnC4mLi4PVN6wCIz4+nq5r7NixMGePxGdYbxkz3mKDCYfDsFcM244bbriBrotV5LVv3x7mrlYWDOvx5hIKhWDvoCVLlsDlXVVNAwcOhDmrjJs1axbMCxQoQMdgbUQYdowyrmqStm3bwvzee+/1Wp61czDj1WxMKBTyqhBzVVWyaj3fqrG6devSMVy9DplQKBRVhRji6geIsOpNVBkWLd/tY30kzXhLItYHkFVuuvr9RVP55wNVeZ7Eeh2yyqn//ve/MN+yZQsdI9rKRvS7x87na665xnuMr776Cubly5f3Xpfvb+Gp9BchERERCSxNhERERCSwNBESERGRwNJESERERAJLEyEREREJLE2EREREJLC86urC4TAsaWYN+FyN7lgzPVZezhq3sdJ2M4Nl1C5xcXHwPdWrV4fLDx8+nK6Lle7PnTsX5gcOHIC5q3ze1fgQCYVCsFz8yiuvhMu7SstZM09Wru3bZNfMf/vM/txG1Cywfv36cPkGDRrQdbEmo+vWrYM5awzsKp91ldafba1bt4b56tWrYX7//ffDPDk5mY7hWz5vhs8d1lTRdYyykt709HSY33fffTB3lV67HqHB5OTkwKah0ZTiP//88zCfM2cOzNmjA/bt20fHqFy5ckQWzbnJpKSk0Nf69u0L81deeQXm7JEXrubG0RyjPlyPAZkwYQLMn3zySZiz68WRI0foGL6Nj834Y0jYOcUaUZuZjRw5EuatWrWCeb169U7/AU+Brvk+9BchERERCSxNhERERCSwNBESERGRwNJESERERAJLEyEREREJLK+qsVAoBBu4sYqn999/n65r586dMGeVXr1794b54cOH6RjRQNUQrsaVzNChQ2E+bdo0mN92220wv/TSS+kYvk1l2XuiqSp4++23Yc4aZsayqWM0WGXIrl276HumTJkC8169esGc7XNWZXYusIoNM7P58+fDnFV7smPUtzrzdFCFGKu869OnD13Pb7/9BvNixYrB/JFHHoG5qyouGnFxcbBC7Pfff4fLs0aiZmbr16+HOWvm2aJFC5if7cajLqiC7iRWXcwqG19//XWYx/p3Avn2229hPn78ePoe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Yw58sd8JlpuZ/etf//Iao0+fPjB3bR97ZIuvWJbus2bC3bt3h7nrERaxdNFFF8Hc1dyZNQ1mjVo7duzo/8H+Iv1FSERERAJLEyEREREJLE2EREREJLA0ERIREZHA0kRIREREAsuraiwUClmePHkiclZ5U7RoUbou1pzz+PHjMP/2229h7qr6adCgAX0tFg4fPkxf69Gjh9e6Vq5cCXNX5UusmpKyCgVW6eXCqskKFCgA85SUFLquaKo54uLiYCUPa1bowqqkVq1aBfNhw4bB3HUcXnHFFd6fC+13VuG2e/duuh7WRJU1j+zduzfMY1mdGRcXF7MqtL59+8KcNWNm1S2sWahZdPuPYce7q2kmO7bYucsa6i5evJiOgSouo2lozZo7uypH2XuY1atXw9xVgcp+c3zt2LED5q6qMbbP2bnJqg1dVVuxqoozi26/X3nllV753LlzYX7bbbfRMdA+9Nlu/UVIREREAksTIREREQksTYREREQksDQREhERkcDSREhEREQCy7tqDN21znrxuPrwsN5B7A77ZcuWwdxVDRRNryqEVWft2bOHvodVjbG+U+vXr4f5zp076RjVq1enr/lgVWOu75b17tqyZQvMWUWFqyInlg4dOhSzdV188cVey7uqUlAV5umg45r17UlLS6PrYX36WDXk6NGjYf7QQw/RMaKt/DvVunXr4LLsuDLjVaush957770Hc1flXTRVNAzrF+WqqqpduzbMBw0aBHPWq2rp0qV0jGuvvTYii6ZSkFWAuSrDatSoAXN23WA9LF2f1/X9+ti/fz/M165dS9/DPhc7rjZu3AhzVulpZpaVlUVf83Xs2DHv97DzkPVHfPzxx2HuqqBG11FXteWp9BchERERCSxNhERERCSwNBESERGRwNJESERERAJLEyEREREJrJjcLs+qKp5++mn6npYtW8Kc9bz5+eefYZ6cnEzH8K0aC4fD8A57Vs3B+vaY8Yqy7777DuaZmZkwd90pf+DAAfoag6oR6tatC5d1Vaz98ssvMGdVPKy65VwpV64czFmPNzNe4ceqi/Lnzw/zSpUq0TFi1VeLVXpNmzaNvqdPnz4wZ+fg999/D/MOHTrQMapWrUpf88G+23feeYe+p3LlyjBnlXoLFy6E+Z133knHYL31XMLhsFf1DevLaGY2Z84cmP/www9enykpKYm+hiouo6mW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nGxz586NyFmvqDfffJOOzXr9LFu2jL4HGTVqFH3t6quvhjnbvpSUFNg/jG3ftGnT6Nhs+9DxYcZ76z300EN0DHaNSUxMpMdoSkqK/fjjjxE5+8H66KOP6Pg33HADGx/mI0eOhLmrXxz67tu0aUOXZ/uQnYOTJ0+m62LXUTZpZT23br/9djpG8+bNYZ4nT56YXEdd/f7Y+fnFF1/AvH79+jBnvR/NzC666CKYly1b1vs6ynr+TZkyhY7fo0cP+hrSrVs3mI8YMYK+B00QmzZtesZj6r/GREREJLA0ERIREZHA0kRIREREAksTIREREQksr5ulzXD1z8qVK+Gy48ePp+upVKkSzNnNY/369YO5q8KFVWG4oJvwDh48CJd999136Xp27twJ84svvhjm69evh7mr6qdixYr0tVjYtIk/YX3GjBkwZzcY//Of/4Q5q44w4zdXng66oY9VCg0fPpyuh1WgDBw4EOYTJ06EOauwM+M3fTJxcXEWHx8fkbMbnOfMmUPXNWDAAJiz83n06NEwP3z4MB0jJyeHvoaEQiFaDYm899579LVq1arB/G9/+xvMO3XqBHNXUQSrznIJhULwxmh2LkyYMIGuq2vXrjBn15nnn38e5qVLl6ZjNG7cOCI73bmJXmfXRFY4Y2ZWq1YtmLOqtF9++QXmrsIPVgUaK+x8MjMrVKgQzNk1ZurUqTB3Vdf53DR8Ujgcht9LWloaXP7hhx+m66pduzbMWZHVZ599BnN23pqZ1ahRIyLz+f3XX4REREQksDQREhERkcDSREhEREQCSxMhERERCSxNhERERCSwvEseUEUO6xXTv39/up4mTZrAPD09Hebt27eHuetR76i65nTQneasaoy1uDAze/nll2HOKulWrVoF80aNGtExoqlY8bFt2zb6Gut506tXL5h//PHHME9KSvIeIxqsAo71ozLjFRqsFQKrQGOtG8zMChYsSF/zwXoNudoXMKw6g203O5fNeD88X6y6zlU5yfaH73fuOs9ieYyycXr27Enf07t3b5izKkLWisHVN7FAgQIRmatqLBQKwesoew+qSjvpyiuvhPm3334L84ULF8Lc1acqmupiH6zthxm/XrI2PqylDOvpZxbdNSYUCsHWKuy3kFW5mfEWNayVBrsms1YhsaC/CImIiEhgaSIkIiIigaWJkIiIiASWJkIiIiISWJoI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3fymm26SY6iCjJBsNuveiL9tm3/LhroPKERdG+666y43f+KJJ6LHUDKZjHsDvXp/QzdLDxkyxM3/85//uPn69evdPPQ5qetfiHedU/chTps2TW5H3aenbgx+88033Xzo0KFyjJjiitNRn1X9+vXla9T1ZOvWrW6uipDUfYJmfsGGKj7w8BchAACQWkyEAABAajERAgAAqcVECAAApBYTIQAAkFpRVWNm/p3b6hH7oaof9RTXSy+91M3VI7xDj/ZWT/qNpVokhFon/PznP3dz9Uh89QRg9dh/s/BTmRXv81OVaaEnvqqnLg8aNMjNH3nkETcPVf3FVlSFqBYbI0eOlK9RbUFUdYh6EneoDUyoRYTiVRypKsw77rhDbke1FlBPMlbr79ixQ44RWzWWyWSsRo0aFXLV7sRrVXGSehK2eq/GjRsXPUaoqlNJksStaAlV+CnPPfecm6snbqun/P43qPfq6quvlq9R1VPqOLp27ermqq2KmX6yfoh3Pm7ZssVdd/ny5XI73bp1c3NVUaXOkdBvnarqPh3v90V1a7jgggvkdlQXCdVGRFWOn3/++XIM7xjVNcPDX4QAAEBqMRECAACpxUQIAACkFhMhAACQWkyEAABAajERAgAAqRVdXx5TLtqjRw+5bMyYMW6+YsUKN+/evXv0GKoBqFJeXu6W4anHA6gSRzPdHK9Dhw5urkrxP/nkEzlGLs0CYz6//v37y2WqeaN6bMDBgwfdPFR2efz48cDe+crKymz//v0VcvW4BlVmbGY2YcIENx8/frybt2nTxs137dolx8jlEQFe6bVq7KrKj83Cjw7w3HnnnW4eaiobU8J6Usw5Onz4cLlszpw5br527Vo379evn5t75fwn5dJ0NZPJuI9UUA2IQ82d33jjDTefP3++m6vm1SGhZpeebDbrNtps2rSpu773fT3p5ZdfdvNvfOMbbn7NNde4+ccffyzHyFdzbnV8oUeEqIbeqhn0Lbfc4uah77n6/QrJZrP22WefVchVc1X1OBUzs6VLl7q5aorau3dvNw89SiZm++66UVsGAAA4izARAgAAqcVECAAApBYTIQAAkFpMhAAAQGrlpyupEKqWUZUm6q501dBS3amfi0wm495hrxqlDhkyRG6rdu3abj5w4EA3V01XQw3zYu6KD1FVIaoyzExX5KkqKFUR065dOzlGqFpHyWQybnVBgwYN3PVDjS4vvPBCN1eNgZVQs8BcxFRiFRcXy2Xqu6a+U6oiJ5/fQUUds2p0aaY/c9U8Vn3euVTdhKiqKtX806veOemFF16IGrtLly5uHqpOVc2HQ7yGnarJZqhxttpfVUnXq1cvNw81Vs3XdbRJkyZuriqFzcwmTZrk5qqa7J577onfsRwkSRJ1/VXV3ma6iap6v1RT5K8SfxECAACpxUQIAACkFhMhAACQWkyEAABAajERAgAAqfWVVo0tWLBALps+fbqb79u3z80nT57s5qHKplAfqxiqT1aoJ5Kqhlq9erWbq75lhYWFcoxQf5cYqg+P6mNkpnvFbdiwwc3Vvob6x8T2ODL7otrBqwqqW7euu36oAkuN/69//cvNO3fufPodPEUu/dS8KhdVWaQqdczMnnvuOTdXFSB//vOf3VxVQprlVvnnUccxd+7c6LFVlVCnTp3cXFWTmYUrupQkSdw+gaqKb9GiRdFjPPjgg26uvgehCt/YqjH1HfT6q5mFv+eqT9eyZcvcvKioyM2vvPJKOYZXwZeL//kf/+e0tLRUvkZVsx09etTN1fdAvbf5pvZrzZo18jXq/FG/n++//76bq8pjM/866lUuKvxFCAAApBYTIQAAkFpMhAAAQGoxEQIAAKnFRAgAAKRWVNWY6pGzf/9+d31197eZ2bZt29xc9UaaOnWqm/fs2VOOUb16dbkshuobpioazMz69+/v5h988EFe9slM75dSXl7u3vV/5MgRd/1QJcLrr7/u5ps3b3bz9u3bu7nqWWamq9lyofoZqUooM7NvfvObbq7er5KSEjdXffXM8ldVpcZevHixfM2AAQPcXL1X6rMNVaaFPl9PNpt1K2lUhUnoHFFVj5dccknUPoUqjnKpbFRUBWGo15k6F9Vr3nnnnegx1Hc3ljrX169fL1/z7W9/283nzZvn5qGeaYpXwZcLVQEbuk537NgxalurVq1y81CFdD57HR44cMDNQ9cZdfyqGvu1115z83PPPVeO0ahRI7msMviLEAAASC0mQgAAILWYCAEAgNRiIgQAAFKLiRAAAEgtJkIAACC18tJ0VZVZP/zww/I1Dz30kJvv3LnTzZs1a+bmoaaHqgleLNV0sUWLFvI1qoxTlYPma19DkiRxx1GPARg8eLDc1sSJE91cNa4cMWKEm6smu2ZfviTy/6tVq5abq/JVM90Id9SoUW6umnnmkyovV+9VqDHv9ddf7+aqSeLQoUPd/NixY3KMBg0ayGUedY6qEtzRo0fLba1bt87Nmzdv7uatW7d281Bj3FyaXZaXl7tl76q8/Le//a3c1k033eTmCxcudPPLLrvMzUPNnXPhNTNWj5EIXUeffvppN7/nnnvc/JprrqnE3n01VAPn0CNeVDn83r173Xz27Nlu3qdPHzlG7HcwRJWwh84f1dDXa8xrpsvqQ4/K8B43EGqofSr+IgQAAFKLiRAAAEgtJkIAACC1mAgBAIDUYiIEAABSK8lms5VfOUn2mZnfLfXMUpDNZivc/s7xnTHc4zM7+4+R4ztjnO3n6Nl+fGaco2f6McrjO1XURAgAAOBswn+NAQCA1GIiBAAAUouJEAAASK2ovg6NGzfOxjyKPdT+YsuWLW5epUoVNy8qKqr0uKezfPnyEu8mKnV8XksDM7M9e/bIMfbv3+/mF1xwgZurx6Crsc30e7VixYqo41OPIv/oo4/k2IcOHXJz1XKgadOmcluKun9NHZ9Z/Dkaap+gjr969epurloInDhxQo6hHjO/cuVK+RkWFBRUWL+srMzdjmpZY6YfWa9aTdSrV09uK1bsd1Cdozt27JBjlJSUuLn3OH4zfY6q9h5mZlWrVnVzdXxm+T1Ht2/f7uaq7UmTJk3cXJ27Zn77n61bt1pJSUkithX1Ge7evVuOrc5Rdb0MteuIFXuOquvVxo0b5RiqnYRqmaPa39SsWVOOoX4n1DXGLP4cDbXZUcevrn3qM1TfNbP4c7TC6yuz0kmFhYW2ZMmSCrl6o0MnwM033+zmdevWdfO//e1vldjDykmSxL0bvrCw0JYtW1YhV1/G8ePHyzFmzZrl5hMmTHDz6667zs1DkxF1MahWrVrU8al+VL/73e/k2G+99Zab9+/f380feOABNw/drK8mENWrV5fVDOoY1URhw4YNcnx1/OoCoXqQhT7D888/381r167tHmNBQYH7HVS97caOHSvH/uMf/+jmkyZNcnPVJy8Xsd9BrzeXmdm9994rx/jDH/7g5m3btnXzcePGuXnv3r3lGOedd56bV6lSJXiOLl26tEKuetWtWbNGjn/33Xe7+YcffujmqkfXrbfeKsfwjlH1FDTTn+HRo0fd9X/yk5/IbalzVPXJmzJlitxWrNhzVE1Yhw0bJsdQv2uqz+ONN97o5u3bt5djqD6LderUib6OKqtXr5bL1PGrHp7qM1STeDN/It+lSxe5/qn4rzEAAJBaTIQAAEBqMRECAACpxUQIAACkVtTN0tls1q1iUpUb6oZoM32j79atW91c3ST24osvyjFinThxwvbu3VshX79+vbu+qkoxM7v44ovdfPLkyW6ubpZW1QNm4YoyTzabtdLS0gq5uqm9Ro0acluq8mbmzJlurm6WThJ9U79XCXA6J06csOLi4gq5qnhS1X1m5t6UbGb2yiuvuHmPHj3cXN1Qaxa+WdxTVlbm7rO6eV3dbGpmdsUVV7j5okWL3DyfN0srZWVlbiWNuvlX3RBtZjZkyBA3V5/r1KlT3bxv375yDHWDc0hZWZkdOHCgQq6uMz/84Q/lttSNsOomfFXEMXLkSDlGLHWOrl271l1/zpw5cludO3d288cff9zNL7/8cje/7bbb5Bj5ogoWVq5cKV/zgx/8wM2XL1/u5up38O9//7sco0OHDnKZUlpa6lacqqrn2bNny22p78j8+fPd/Je//KWbq0IjM7+wJubayl+EAABAajERAgAAqcVECAAApBYTIQAAkFpMhAAAQGrFl+U4Fi9eHJWbmU2bNs3N586d6+aqUufJJ5+UY6h2HUqVKlXcvkLNmzd31w891nzevHlurtpGqN5rof4qoYoyT5IkbjsU1dslVO2keo2px+hv2rTJzUM9jmI/P7MvKs28fjyqr43q9RNapipT3n33XTfv2bOnHCO2B5v6DL0qpNNp2bKlm4eqIWPFVsUlSeJWC3rVjma62tLM7Pvf/76bq15x6txV7VnM4is3zb6oovGqLlWbAtXix8zs0UcfdXPVLkRVSdavX1+O4bU3UX3DzPQ5qj7DUA871VpFfW+8ilGz8HkYe45ms1n3Oq5+J0JtbtT5o677XmsWM7N169bJMXKpGqtatWrw2nyqSy65RC7r2LGjm6vfT9WSKFRF7L1foYrkU/EXIQAAkFpMhAAAQGoxEQIAAKnFRAgAAKQWEyEAAJBaTIQAAEBqRZXPJ0nilp4eP348emDVXPXll192c1WuuWHDBjnG17/+9ah9UsfXrFkzd/1evXrJbf3iF79wc6+020w3Vhw/frwco2bNmnJZDFU2rErOzfRnrkrOf/3rX7u5asZqllv5vJlfNqnKVEOPQFBNSVWT4ccee8zNQ42BVfNapUqVKm6pszpHQ9QjKVTpbtu2bd18zJgxcoyYElazL0rLvfNalfqHGsGqR3QsW7bMzevUqePmu3btkmPk8r5ns1n3etaqVSt3/dBjMtQxqoaW119/vZvv2bNHjnHRRRdVyELNZjOZjPsYElWi37VrV7mtF154wc3VIw1effVVNw81AC8oKJDLPEmSBB9rcqo77rhDLlNNVDdv3hy1TzH7UxlJkgSv/6dq166dXKaaGavvoXp8h2pKbBZ+1Etl8BchAACQWkyEAABAajERAgAAqcVECAAApBYTIQAAkFrRTVe9agdV0aEqwMx09dT3vvc9N1fVA6rRpZmu+lFUw0fV7C1U7bBz5043V9v62c9+5ubLly+XY8RWO5iZ2wzRq/AwMxs8eLDcTmFhoZv/85//dPNnnnnGzQcNGiTHiG1IahZf0RGq+lHVXqopYJ8+fdxcNdM0M+vbt6/eOYdq+Hjttde664caqE6cONHNVQPFN998083VZ25m1rt3b7kshmoMPHLkSPkaVSGlvpvqPVSNLs10A96QTCZjNWrUqJB369bNXX/06NFyW6qqVFW03nDDDW4eqozzqsZOx2tkqt6ryZMny+2ElnlUlWLot+jOO++MGiOWur6amc2ePdvNd+/e7ebDhw93c1Xx+GWEKgNPVVRUJJfNnDnTzdX3UG1L/YaYmXXu3LlCFtNMl78IAQCA1GIiBAAAUouJEAAASC0mQgAAILWYCAEAgNSKrhrz7iRv3bq1u26o6serXjIzu+2229xcVU+pvk9m8X2O8klVh6n+YBMmTHBz1b/KTPdfi6WqrELVVw0aNHDzxo0bu/l3v/tdN//000+j9+u/pbi42M337dvn5qoC5E9/+pMcw6sAC4ntARTqUzVu3Dg3Vz2h1Pf5+eefl2NcddVVgb3z5et761VmmenrlepHFeqlmOu+eq+rVauWu2737t3ldtT5M2LECDcfOnSom69du1aOkYuYiqN86tSpk5u/99578jX33XdfXsZW1aTvvPOOfI36PBRVgVpaWipfo/qy5ZOqcjMza968uZvHfg+3bNkSv2OVxF+EAABAajERAgAAqcVECAAApBYTIQAAkFpMhAAAQGpFV4151F3hobvlVZXCxo0bo8bo0KHDafYujleJ9dlnn7nrzp07V25n4cKFbn7ppZe6ueq78tprr8kxhg0bJpfFUD1Z1q9fL1+j+kstWLDAzc8555yosc3M9u/fL5cp2WzWPv/88wq5qu7Zvn273Jaq2FPVU6pyI9QPT1VI5MtTTz0llx05csTNVW+pl156yc1DFUd79uwJ7F3lHT161M0feeQR+Rp1fHXr1nVzdRyqktUsXK2TL+qaaKa/V6rvnbJ37165TPWei3Xw4EE3V30WzXS/yDlz5rj5smXL3Fz1XjMzO3TokFzmyWazbiXh4cOH3fVDx6eqb1X/s2PHjrl5qOdd7PGd5P0Wqut1qJeb6lH4ne98x81Xrlzp5l26dJFjeNd8eo0BAABUAhMhAACQWkyEAABAajERAgAAqcVECAAApBYTIQAAkFp5KZ9XQg0fVSnu22+/7eaqBHHAgAHR+xXiNQtUjVJVqbiZ2RtvvOHmzz77rJt/8sknbn7rrbfKMULl7TFq167t5qGSyMWLF7v5v//9bzdXzRBDn18upddJksiGt2p9RTXBfPzxx91cfYa33367HCNUGh1DNVZUpatmZjNmzIgao02bNm5+//33y9eoRpSxVJn4pk2b5GumT5/u5uqcGzVqlJt369ZNjpGvxschofO5WbNmbq6ajG7bts3NQ+XXX7Y0+ST12ALVgNvM7MEHH3Rz9biRrl27urlqQmtmduDAAbnMkySJ29C3ZcuW7vrq0S9mZn379o0ae/To0W7+VZyHMY1zBw4cKJepRx088MADbq6+b3fddZccg/J5AACAHDERAgAAqcVECAAApBYTIQAAkFpMhAAAQGolMXdWJ0myz8z8soMzS0E2mz331JDjO2O4x2d29h8jx3fGONvP0bP9+Mw4R8/0Y5THd6qoiRAAAMDZhP8aAwAAqcVECAAApBYTIQAAkFpMhAAAQGoxEQIAAKnFRAgAAKQWEyEAAJBaTIQAAEBqMRECAACp9b8HwuXakCvYjAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 720x720 with 100 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "components = pca.transform(example_digits)\n",
    "filtered_digits = pca.inverse_transform(components)\n",
    "plot_digits(filtered_digits)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "图片明显清晰很很多"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
